<?php
// vim: foldmethod=marker
/**
 *  Xanhte_ActionForm.php
 *
 *  @author     {$author}
 *  @package    Xanhte
 *  @version    $Id: Xanhte_ActionForm.php 195 2008-03-01 15:34:44Z mikhail.miguel $
 */

// {{{ Xanhte_ActionForm
/**
 *  アクションフォームクラス
 *
 *  @author     {$author}
 *  @package    Xanhte
 *  @access     public
 */
class Xanhte_ActionForm extends Ethna_ActionForm
{
    /**#@+
     *  @access private
     */

    /** @var    array   フォーム値定義(デフォルト) */
    var $form_template = array();

    /** @var    bool    バリデータにプラグインを使うフラグ */
    var $use_validator_plugin = true;

    /**#@-*/

    /**
     *  フォーム値検証のエラー処理を行う
     *
     *  @access public
     *  @param  string      $name   フォーム項目名
     *  @param  int         $code   エラーコード
     */
    function handleError($name, $code)
    {
        return parent::handleError($name, $code);
    }

    /**
     *  フォーム値定義テンプレートを設定する
     *
     *  @access protected
     *  @param  array   $form_template  フォーム値テンプレート
     *  @return array   フォーム値テンプレート
     */
    function _setFormTemplate($form_template)
    {
        return parent::_setFormTemplate($form_template);
    }

    /**
     *  フォーム値定義を設定する
     *
     *  @access protected
     */
    function _setFormDef()
    {
        return parent::_setFormDef();
    }
	
	
}
// }}}


// {{{ Xanhte_PassThruActionForm
/**
 *  PassThruアクションフォームクラス
 *
 *  @author     {$author}
 *  @package    Xanhte
 *  @access     public
 */
class Xanhte_PassThruActionForm extends Ethna_ActionForm
{
	
    /**
     *  プログラムから明示的に送信された値をフォーム値のようにインポートする
	 *
     *  @access public
     */
    function setFormVars($params=array())
    {
        foreach ($this->form as $name => $def) {
			if (!isset($params[$name]) || is_null($params[$name])) {
				$this->form_vars[$name] = null;
			} else {
                // 配列構造の検査
                if (is_array($def['type'])) {
                    if (is_array($params[$name]) == false) {
						// 厳密には、この配列の各要素はスカラーであるべき
                        $this->handleError($name, E_FORM_WRONGTYPE_ARRAY);
                        $this->form_vars[$name] = null;
                        continue;
                    }
                } else {
                    if (is_array($params[$name])) {
                        $this->handleError($name, E_FORM_WRONGTYPE_SCALAR);
                        $this->form_vars[$name] = null;
                        continue;
                    }
                }
				// 値のインポート
                $this->form_vars[$name] = $params[$name];
			}
		}
	}
	
	
}
// }}}
